package com.wit.witmg.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wit.witmg.entity.TJldzpcom;
import com.wit.witmg.entity.TTjdzpcom;
import com.wit.witmg.entity.TTool;
import com.wit.witmg.mapper.TTjdzpcomMapper;
import com.wit.witmg.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wit.witmg.util.ErrorCode;
import com.wit.witmg.util.JsonResult;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author bob
 * @since 2025-03-26
 */
@Service
@RequiredArgsConstructor
public class TTjdzpcomServiceImpl extends ServiceImpl<TTjdzpcomMapper, TTjdzpcom> implements ITTjdzpcomService {
    final ITECdataService tecdataService;
    final ITEDdataService teddataService;
    final ITEAdataService teadataService;
    final ITJldzpcomService  jldzpcomService;

    @Override
    public Object add(HttpServletRequest request, String json) {
//        json="{\"guid\":106939,\"ph\":\"D48H23_2509133_1\",\"bn\":\"6F.4.1.D48H23\",\"tp\":\"12\",\"remark\":\"\",\"dt0\":\"2025-10-13 14:15:00\",\"dt1\":\"2025-10-13 16:22:00\",\"qt\":\"1255\",\"qqt\":\"1209\",\"v0\":\"\",\"v1\":\"\",\"v2\":\"41\",\"v3\":\"5\"}";
        TTjdzpcom t= JSON.parseObject(json,TTjdzpcom.class);
        if(t==null){
            return JsonResult.error(ErrorCode.ERR_200);
        }
        if(t.getId()>0){
            boolean bl=  updateById(t);
            if(!bl){
                return JsonResult.error(ErrorCode.ERR_200);
            }
        }else{
            if(t.getPh()==null || t.getTp()==null){
                return JsonResult.error(ErrorCode.ERR_200);
            }
            QueryWrapper<TTjdzpcom> qw=new QueryWrapper<>();
            qw.eq("ph",t.getPh());
            qw.eq("tp",t.getTp());
            if(count(qw)>0) {
                remove(qw);
            }
            boolean bl= save(t);
            if(!bl){
                return JsonResult.error(ErrorCode.ERR_504);
            }
        }
        return JsonResult.success(t);
    }

    @Override
    public Object get(HttpServletRequest request,Integer tmd,String ph,Integer gx,String dt0,String dt1) {
        //：根据批号ph，返回工序统计结果单条数据；若数据不存在，到工序记录表（部分工序到特定的设备上传数据表，13残压表，14直流表），根据ph返回对应所有测试结果数据v系列的平均值和标准差值以及ph、bn、tp、开始时间dt0、结束时间dt1、总数qt、合格数qqt,并保持到统计表中。
        if(ph==null) {
            QueryWrapper<TTjdzpcom> qw=new QueryWrapper<>();
            qw.eq("tp", tmd);
            qw.orderByDesc("id");
            if(dt0!=null && dt1!=null){
                qw.ge("dt0", dt0);//大于等于dt0
                qw.le("dt1", dt1);//小于等于dt1
            }else if(dt0!=null){
                qw.ge("dt0", dt0);//大于等于dt0
                qw.last("limit 20");
            }else if(dt1!=null){
                qw.le("dt1", dt1);//小于等于dt1
                qw.last("limit 20");
            }else {
                qw.last("limit 20");
            }
            return JsonResult.success(list(qw));
        }
//        if(gx==1){ //1要重新去记录表更新统计
//            return jldzpcomService.getTj(request,ph,gx,tmd);
//        }
        if(gx!=1) {
            QueryWrapper<TTjdzpcom> qw = new QueryWrapper<>();
            qw.eq("ph", ph);
            qw.eq("tp", tmd);
            qw.last("limit 1");
            TTjdzpcom ent = getOne(qw);
            if (ent != null) {
                return JsonResult.success(ent);
            }
        }
        if(tmd==13){
            return tecdataService.get(request,ph,null,true);
        }else if(tmd==14){
            return teddataService.get(request,ph,null,true);
        }else if(tmd==15){
            return teadataService.get(request,ph);
        }else{
            return jldzpcomService.getTj(request,ph,gx,tmd);
        }
    }

    @Override
    public Object getjd(HttpServletRequest request, String ph) {
        QueryWrapper<TTjdzpcom> qw=new QueryWrapper<>();
        qw.eq("ph",ph);
        return JsonResult.success(list(qw));
    }
}
